Zero Configuration
設定ファイルを書かずにすぐ使い始められるソフトウェア設計の原則。「合理的なデフォルト(sensible defaults)」を用意し、必要な場合のみオーバーライドできる設計。
原則
「Convention over Configuration(CoC)」とも呼ばれ、Ruby on Railsによって広められた。以下の思想に基づく:
- 多くのユーザーが必要とする設定はデフォルトで提供する
- 例外的なケースのみ設定を明示する
- ドキュメントを読まずにとりあえず動かせる
Next.jsにおける適用
[[Next.js]]の設計原則として、Guillermo Rauchが「Zero Setup」を掲げた:
pages/ディレクトリにファイルを置くだけでルーティングが機能する- バンドリング、コード分割、最適化がデフォルトで有効
- 設定なしでTypeScript、CSS Modules、画像最適化が使える
これにより、React単体で必要だった大量の設定(Webpack、Babel等)が不要になった。
段階的開示との関係
Zero Configurationは段階的開示と相補的な関係にある:
初心者: 設定なしで動く(ゼロ設定)
↓
中級者: 必要に応じてカスタマイズ(next.config.js等)
↓
上級者: 深いカスタマイズ(独自プラグイン、低レベルAPI)
入門障壁を下げながら、熟練者には十分な深さを提供する。
トレードオフ
Zero Configurationには副作用もある:
- 暗黙の動作が増え、「なぜこう動くのか」が分かりにくくなる
- デフォルトの選択が自分のユースケースに合わない場合、オーバーライドが難しいことがある
- バージョンアップ時にデフォルト変更が破壊的変更になる(例:Next.js v14→v15のキャッシュ設定変更)
「暗黙から明示へ」という方向への転換は、Zero Configのデメリットへの対処でもある。
他フレームワークの例
| フレームワーク | Zero Config要素 |
|---|---|
| Next.js | ファイルシステムルーティング、自動最適化 |
| Vite | モダンブラウザ向けデフォルト設定 |
| Create React App | Webpack設定の隠蔽 |
| Ruby on Rails | ディレクトリ構造の規約 |
関連
- 段階的開示
- Opt-in設計とOpt-out設計
- [[Next.js]]
- 認知負荷
- エンジニアリングプラクティス